/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.gui;

import com.camachosanchez.bean.Baterias;
import com.camachosanchez.bean.Categorias;
import com.camachosanchez.bean.DistribuidoresBaterias;
import com.camachosanchez.bean.MarcasBaterias;
import com.camachosanchez.bean.Vehiculos;
import com.camachosanchez.controler.jdbc.BateriasJdbcControler;
import com.camachosanchez.controler.jpa.BateriasJpaController;
import com.camachosanchez.controler.jpa.DistribuidoresBateriasJpaController;
import com.camachosanchez.controler.jpa.MarcasBateriasJpaController;
import com.camachosanchez.gui.textfield.MaxLengthTextDocument;
import com.camachosanchez.util.Constantes;
import com.camachosanchez.util.EstadosJDialog;
import com.camachosanchez.util.GUIUtil;
import com.camachosanchez.util.SQLUtil;
import java.awt.event.KeyEvent;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;

/**
 *
 * @author ZULLY
 */
public class EditorBateria extends javax.swing.JDialog {

    public EstadosJDialog.EstadoJDialog Estado;
    private BusquedaBateria buscador;
    private int fila;
    private Baterias bateria;
    /**
     * Creates new form EditorBateria
     */
    public EditorBateria(BusquedaBateria buscador, java.awt.Frame parent, boolean modal, Baterias bateria, int fila) {
        super(parent, modal);
        initComponents();
        this.setLocationRelativeTo(null);
        GUIUtil.addEscapeKey(this);
        this.buscador = buscador;
        this.fila = fila;
        llenarCombos();
        MaxLengthTextDocument docCodigo = new MaxLengthTextDocument();
        docCodigo.setMaxChars(30, Constantes.ANY);
        txtCodigo.setDocument(docCodigo);
        txtCodigo.requestFocusInWindow();
        
        if (bateria != null) {
            this.CargarDatosBateria(bateria);
            this.bateria = bateria;
            int id_categoria = bateria.getIdCategoria().getId();
            //envía a bodega cuando está en stock o enviado a reparación
            if (id_categoria == Constantes.CATEGORIA_STOCK || id_categoria == Constantes.CATEGORIA_REPARACION) {
                btnABodega.setEnabled(true);
            } else {
                btnABodega.setEnabled(false);
            }
            //regresa a stock cuando está en bodega provicional, en reparación, en cementerio, o para reencauche
            if (id_categoria == Constantes.CATEGORIA_BODEGA || id_categoria == Constantes.CATEGORIA_REPARACION) {
                btnAStock.setEnabled(true);
            } else {
                btnAStock.setEnabled(false);
            }
            //para ver la ubicación actual del neumático cocn categoría montado
            if (id_categoria == Constantes.CATEGORIA_MONTADO) {
                btnUbicacion.setEnabled(true);
            } else {
                btnUbicacion.setEnabled(false);
            }
            if(Constantes.currentUser.getRol() == Constantes.ROL_ADMINISTRADOR){
                btnACementerio.setVisible(true);
                //envía a cementerio cuando está en stock, bodega provicional o en reparación
                if (id_categoria == Constantes.CATEGORIA_STOCK || id_categoria == Constantes.CATEGORIA_BODEGA || id_categoria == Constantes.CATEGORIA_REPARACION) {
                    btnACementerio.setEnabled(true);
                } else {
                    btnACementerio.setEnabled(false);
                }
            } else {
                btnACementerio.setVisible(false);
            }
            if (id_categoria == Constantes.CATEGORIA_STOCK || id_categoria == Constantes.CATEGORIA_BODEGA) {
                btnReparacion.setEnabled(true);
            } else {
                btnReparacion.setEnabled(false);
            }
        } else {
            btnABodega.setVisible(false);
            btnACementerio.setVisible(false);
            btnAStock.setVisible(false);
            btnUbicacion.setVisible(false);
            btnReparacion.setVisible(false);
        }
    }

    private void llenarCombos(){
        MarcasBateriasJpaController dao_marcas = new MarcasBateriasJpaController(null);
        DistribuidoresBateriasJpaController dao_distribuidores = new DistribuidoresBateriasJpaController(null);
        List<MarcasBaterias> marcas = dao_marcas.findMarcasBateriasEntities();
        List<DistribuidoresBaterias> distribuidores = dao_distribuidores.findDistribuidoresBateriasEntities();
        cmbMarca.setModel(new DefaultComboBoxModel(marcas.toArray()));
        distribuidores.add(0, null);
        cmbDistribuidor.setModel(new DefaultComboBoxModel(distribuidores.toArray()));
    }
    
    public EstadosJDialog.EstadoJDialog getEstado() {
        return Estado;
    }

    public void setEstado(EstadosJDialog.EstadoJDialog Estado) {
        switch (Estado) {
            case NUEVO:
                btnEliminar.setVisible(false);
                break;
            case MODIFICAR:
                btnEliminar.setVisible(true);
                break;
        }
        this.Estado = Estado;
    }

    private void GuardarDatos() {
        switch (this.Estado) {
            case NUEVO:
                this.RegistraBateria(this.LeerDatosBateria());
                break;
            case MODIFICAR:
                this.ModificarBateria(this.LeerDatosBateria());
                break;
            case ELIMINAR:
                break;
            default:
                break;
        }
    }
    
    private void CargarDatosBateria(Baterias bateria) {
        txtCodigo.setText(bateria.getCodigo());
        cmbMarca.setSelectedItem(bateria.getIdMarca());
        cmbDistribuidor.setSelectedItem(bateria.getIdDistribuidor());
        spnNumeroPlacas.setValue(bateria.getNroPlacas());
    }

    private Baterias LeerDatosBateria() {
        Baterias b = new Baterias();
        b.setCodigo(txtCodigo.getText().trim());
        b.setIdMarca((MarcasBaterias)cmbMarca.getSelectedItem());
        b.setIdDistribuidor((DistribuidoresBaterias)cmbDistribuidor.getSelectedItem());
        b.setNroPlacas(Integer.parseInt(spnNumeroPlacas.getValue().toString()));
        b.setIdUsuario(Constantes.currentUser);
        b.setEstado(true);
        if (this.bateria != null) {
            b.setIdCategoria(bateria.getIdCategoria());
            b.setDetalleControlCambioBateriaList(bateria.getDetalleControlCambioBateriaList());
            b.setInfMontaje(bateria.getInfMontaje());
        } else {
            b.setIdCategoria(new Categorias(Constantes.CATEGORIA_STOCK));
            b.setInfMontaje("");
        }
        return b;
    }

    private boolean ValidarDatos() {
        if (txtCodigo.getText().trim().isEmpty()) {
            JOptionPane.showMessageDialog(this, "Se requiere un código para la batería.", "Datos incompletos", JOptionPane.WARNING_MESSAGE);
            txtCodigo.requestFocusInWindow();
            return false;
        }
        if (cmbMarca.getSelectedItem() == null) {
            JOptionPane.showMessageDialog(this, "Se requiere una marca para la batería.", "Datos incompletos", JOptionPane.WARNING_MESSAGE);
            cmbMarca.requestFocusInWindow();
            return false;
        }
        return true;
    }

    private void RegistraBateria(Baterias bateria) {
        BateriasJpaController dao_bateria = new BateriasJpaController(null);
        bateria.setEstado(true);
        dao_bateria.create(bateria);
        JOptionPane.showMessageDialog(this, "La batería ha sido guardada correctamente.", "Operación finalizada", JOptionPane.INFORMATION_MESSAGE);
        buscador.llenarTabla();
        this.dispose();
    }

    private void ModificarBateria(Baterias bateria) {
        BateriasJpaController dao_bateria = new BateriasJpaController(null);
        try {
            bateria.setEstado(true);
            bateria.setId(this.bateria.getId());
            dao_bateria.edit(bateria);
            JOptionPane.showMessageDialog(this, "Los datos de la batería han sido actualizados correctamente.", "Operación finalizada", JOptionPane.INFORMATION_MESSAGE);
            buscador.llenarTabla();
            dispose();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(Principal.getInstance(), e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }
    
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        toolBarPrincipal = new javax.swing.JToolBar();
        pnlToolBar = new javax.swing.JPanel();
        btnGuardar = new javax.swing.JButton();
        btnUbicacion = new javax.swing.JButton();
        btnABodega = new javax.swing.JButton();
        btnReparacion = new javax.swing.JButton();
        btnAStock = new javax.swing.JButton();
        btnACementerio = new javax.swing.JButton();
        btnEliminar = new javax.swing.JButton();
        pnlContenedor = new javax.swing.JPanel();
        lblNombre = new javax.swing.JLabel();
        txtCodigo = new javax.swing.JTextField();
        lblDireccion = new javax.swing.JLabel();
        lblTelefono = new javax.swing.JLabel();
        cmbMarca = new javax.swing.JComboBox();
        cmbDistribuidor = new javax.swing.JComboBox();
        lblNombre1 = new javax.swing.JLabel();
        spnNumeroPlacas = new javax.swing.JSpinner();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle(".:: Batería ::.");
        setResizable(false);

        toolBarPrincipal.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        toolBarPrincipal.setFloatable(false);
        toolBarPrincipal.setRollover(true);
        toolBarPrincipal.setOpaque(false);

        pnlToolBar.setBackground(new java.awt.Color(255, 255, 255));
        pnlToolBar.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));

        btnGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/24_save.png"))); // NOI18N
        btnGuardar.setToolTipText("Guardar");
        btnGuardar.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnGuardar.setFocusable(false);
        btnGuardar.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnGuardar.setMaximumSize(new java.awt.Dimension(22, 22));
        btnGuardar.setMinimumSize(new java.awt.Dimension(22, 22));
        btnGuardar.setPreferredSize(new java.awt.Dimension(22, 22));
        btnGuardar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGuardarActionPerformed(evt);
            }
        });
        pnlToolBar.add(btnGuardar);

        btnUbicacion.setBackground(new java.awt.Color(255, 204, 102));
        btnUbicacion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/24_ubicacion.png"))); // NOI18N
        btnUbicacion.setToolTipText("Ver ubicación");
        btnUbicacion.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnUbicacion.setFocusable(false);
        btnUbicacion.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnUbicacion.setMaximumSize(new java.awt.Dimension(22, 22));
        btnUbicacion.setMinimumSize(new java.awt.Dimension(22, 22));
        btnUbicacion.setPreferredSize(new java.awt.Dimension(22, 22));
        btnUbicacion.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnUbicacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnUbicacionActionPerformed(evt);
            }
        });
        pnlToolBar.add(btnUbicacion);

        btnABodega.setBackground(new java.awt.Color(255, 204, 102));
        btnABodega.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/24_bodega.png"))); // NOI18N
        btnABodega.setToolTipText("Enviar a bodega");
        btnABodega.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnABodega.setFocusable(false);
        btnABodega.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnABodega.setMaximumSize(new java.awt.Dimension(22, 22));
        btnABodega.setMinimumSize(new java.awt.Dimension(22, 22));
        btnABodega.setPreferredSize(new java.awt.Dimension(22, 22));
        btnABodega.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnABodega.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnABodegaActionPerformed(evt);
            }
        });
        pnlToolBar.add(btnABodega);

        btnReparacion.setBackground(new java.awt.Color(253, 241, 179));
        btnReparacion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/reparacion.png"))); // NOI18N
        btnReparacion.setToolTipText("Enviar a reparación");
        btnReparacion.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnReparacion.setContentAreaFilled(false);
        btnReparacion.setFocusable(false);
        btnReparacion.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnReparacion.setMaximumSize(new java.awt.Dimension(22, 22));
        btnReparacion.setMinimumSize(new java.awt.Dimension(22, 22));
        btnReparacion.setOpaque(true);
        btnReparacion.setPreferredSize(new java.awt.Dimension(22, 22));
        btnReparacion.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnReparacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnReparacionActionPerformed(evt);
            }
        });
        pnlToolBar.add(btnReparacion);

        btnAStock.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/24_estockear.png"))); // NOI18N
        btnAStock.setToolTipText("Regresar a stock");
        btnAStock.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnAStock.setContentAreaFilled(false);
        btnAStock.setMaximumSize(new java.awt.Dimension(22, 22));
        btnAStock.setMinimumSize(new java.awt.Dimension(22, 22));
        btnAStock.setPreferredSize(new java.awt.Dimension(22, 22));
        btnAStock.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAStockActionPerformed(evt);
            }
        });
        pnlToolBar.add(btnAStock);

        btnACementerio.setBackground(new java.awt.Color(255, 204, 102));
        btnACementerio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/24_delete.png"))); // NOI18N
        btnACementerio.setToolTipText("Enviar a cementerio");
        btnACementerio.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnACementerio.setFocusable(false);
        btnACementerio.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnACementerio.setMaximumSize(new java.awt.Dimension(22, 22));
        btnACementerio.setMinimumSize(new java.awt.Dimension(22, 22));
        btnACementerio.setPreferredSize(new java.awt.Dimension(22, 22));
        btnACementerio.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnACementerio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnACementerioActionPerformed(evt);
            }
        });
        pnlToolBar.add(btnACementerio);

        btnEliminar.setBackground(new java.awt.Color(255, 204, 102));
        btnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/24_eliminar.png"))); // NOI18N
        btnEliminar.setToolTipText("Eliminar");
        btnEliminar.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnEliminar.setFocusable(false);
        btnEliminar.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnEliminar.setMaximumSize(new java.awt.Dimension(22, 22));
        btnEliminar.setMinimumSize(new java.awt.Dimension(22, 22));
        btnEliminar.setPreferredSize(new java.awt.Dimension(22, 22));
        btnEliminar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarActionPerformed(evt);
            }
        });
        pnlToolBar.add(btnEliminar);

        toolBarPrincipal.add(pnlToolBar);

        getContentPane().add(toolBarPrincipal, java.awt.BorderLayout.PAGE_START);

        lblNombre.setText("<html>Código: <font color=\"red\">(*)</font> </html>");

        txtCodigo.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                txtCodigoKeyPressed(evt);
            }
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtCodigoKeyTyped(evt);
            }
        });

        lblDireccion.setText("<html>Marca: <font color=\"red\">(*)</font> </html>");

        lblTelefono.setText("Distribuidor:");

        cmbMarca.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cmbMarca.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                cmbMarcaKeyPressed(evt);
            }
        });

        cmbDistribuidor.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        cmbDistribuidor.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                cmbDistribuidorKeyPressed(evt);
            }
        });

        lblNombre1.setText("<html>N° de Placas: <font color=\"red\">(*)</font> </html>");

        spnNumeroPlacas.setModel(new javax.swing.SpinnerNumberModel(0, 0, 100, 1));
        spnNumeroPlacas.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                spnNumeroPlacasKeyPressed(evt);
            }
        });

        javax.swing.GroupLayout pnlContenedorLayout = new javax.swing.GroupLayout(pnlContenedor);
        pnlContenedor.setLayout(pnlContenedorLayout);
        pnlContenedorLayout.setHorizontalGroup(
            pnlContenedorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlContenedorLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlContenedorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlContenedorLayout.createSequentialGroup()
                        .addGroup(pnlContenedorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(lblNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lblTelefono)
                            .addComponent(lblDireccion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 29, Short.MAX_VALUE)
                        .addGroup(pnlContenedorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(cmbDistribuidor, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 202, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(cmbMarca, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 202, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txtCodigo, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 202, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(pnlContenedorLayout.createSequentialGroup()
                        .addComponent(lblNombre1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(spnNumeroPlacas, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, Short.MAX_VALUE)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pnlContenedorLayout.setVerticalGroup(
            pnlContenedorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlContenedorLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlContenedorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txtCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(pnlContenedorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblDireccion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(cmbMarca, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(pnlContenedorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblTelefono)
                    .addComponent(cmbDistribuidor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(pnlContenedorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(spnNumeroPlacas, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblNombre1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(14, Short.MAX_VALUE))
        );

        getContentPane().add(pnlContenedor, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGuardarActionPerformed
        // TODO add your handling code here:
        if (ValidarDatos()) {
            GuardarDatos();
        }
    }//GEN-LAST:event_btnGuardarActionPerformed

    private void txtCodigoKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtCodigoKeyPressed
        // TODO add your handling code here:
        if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
            cmbMarca.requestFocusInWindow();
        }
    }//GEN-LAST:event_txtCodigoKeyPressed

    private void txtCodigoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtCodigoKeyTyped
        // TODO add your handling code here:
        //        char caracter = evt.getKeyChar();
        String caracteres = txtCodigo.getText();
        if (caracteres.length() >= 30) {
            evt.consume();
        }
    }//GEN-LAST:event_txtCodigoKeyTyped

    private void cmbMarcaKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_cmbMarcaKeyPressed
        // TODO add your handling code here:
        if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
            cmbDistribuidor.requestFocusInWindow();
        }
    }//GEN-LAST:event_cmbMarcaKeyPressed

    private void cmbDistribuidorKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_cmbDistribuidorKeyPressed
        // TODO add your handling code here:
        if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
            spnNumeroPlacas.requestFocusInWindow();
        }
    }//GEN-LAST:event_cmbDistribuidorKeyPressed

    private void spnNumeroPlacasKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_spnNumeroPlacasKeyPressed
        // TODO add your handling code here:
        if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
            btnGuardar.requestFocusInWindow();
        }
    }//GEN-LAST:event_spnNumeroPlacasKeyPressed

    private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarActionPerformed
        // TODO add your handling code here:
        if (JOptionPane.showConfirmDialog(null, "¿Está seguro que desea eliminar esta batería?", "Confirmación", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
            BateriasJdbcControler daoJdbc = new BateriasJdbcControler();
            byte estado = daoJdbc.eliminarBateria(this.bateria.getId());
            if (estado == 1) {
                JOptionPane.showMessageDialog(this, "La batería se encuentra relacionada con otros registros, no puede ser eliminada.", "Error en la eliminación", JOptionPane.ERROR_MESSAGE);
            } else {
                JOptionPane.showMessageDialog(this, "La batería se ha eliminado de forma segura.", "Operación finalizada", JOptionPane.INFORMATION_MESSAGE);
                buscador.borrarBateria(fila);
                dispose();
            }
        }
    }//GEN-LAST:event_btnEliminarActionPerformed

    private void btnACementerioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnACementerioActionPerformed
        // TODO add your handling code here:
        int opcion = JOptionPane.showConfirmDialog(Principal.getInstance(), "¿Desea enviar la batería a cementerio?", "Advertencia", JOptionPane.YES_NO_OPTION);
        if (opcion == JOptionPane.OK_OPTION) {
            BateriasJpaController dao = new BateriasJpaController(null);
            Categorias categoria = new Categorias();
            categoria.setId(Constantes.CATEGORIA_CEMENTERIO);//enviado a cementerio
            categoria.setNombre("Enviado a cementerio");
            this.bateria.setIdCategoria(categoria);
            try {
                dao.edit(bateria);
                JOptionPane.showMessageDialog(this, "La batería fué dada de baja exitosamente.", "Operación finalizada", JOptionPane.INFORMATION_MESSAGE);
                buscador.borrarBateria(fila);
                dispose();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(Principal.getInstance(), e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
        }
    }//GEN-LAST:event_btnACementerioActionPerformed

    private void btnAStockActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAStockActionPerformed
        // TODO add your handling code here:
        int opcion = JOptionPane.showConfirmDialog(Principal.getInstance(), "¿Desea regresar la batería a stock?", "Advertencia", JOptionPane.YES_NO_OPTION);
        if (opcion == JOptionPane.OK_OPTION) {
            BateriasJpaController dao = new BateriasJpaController(null);
            Categorias categoria = new Categorias();
            categoria.setId(Constantes.CATEGORIA_STOCK);//en stock
            categoria.setNombre("En Stock");
            this.bateria.setIdCategoria(categoria);
            try {
                dao.edit(bateria);
                JOptionPane.showMessageDialog(this, "La batería fué regresada a stock exitosamente.", "Operación finalizada", JOptionPane.INFORMATION_MESSAGE);
                buscador.actualizarBateria(bateria, fila);
                dispose();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(Principal.getInstance(), e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
        }
    }//GEN-LAST:event_btnAStockActionPerformed

    private void btnABodegaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnABodegaActionPerformed
        // TODO add your handling code here:
        //solo está activado este botón para los neumáticos en stock, en reclamo y enviados a reparación
        int opcion = JOptionPane.showConfirmDialog(Principal.getInstance(), "¿Desea enviar la batería a bodega provisional?", "Advertencia", JOptionPane.YES_NO_OPTION);
        if (opcion == JOptionPane.OK_OPTION) {
            BateriasJpaController dao = new BateriasJpaController(null);
            Categorias categoria = new Categorias();
            categoria.setId(Constantes.CATEGORIA_BODEGA);//enviado a bodega provisional
            categoria.setNombre("En bodega provisional");
            this.bateria.setIdCategoria(categoria);
            try {
                dao.edit(bateria);
                JOptionPane.showMessageDialog(this, "La batería fué enviada a bodega provisional exitosamente.", "Operación finalizada", JOptionPane.INFORMATION_MESSAGE);
                buscador.actualizarBateria(bateria, fila);
                dispose();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(Principal.getInstance(), e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
        }
    }//GEN-LAST:event_btnABodegaActionPerformed

    private void btnUbicacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnUbicacionActionPerformed
        // TODO add your handling code here:
        if (bateria.getIdCategoria().getId().equals(Constantes.CATEGORIA_MONTADO)) {
            Vehiculos v = SQLUtil.getUnidadMontadaDeBateria(bateria.getId());
            if(v != null){
                MontajeDesmontaje montaje = new MontajeDesmontaje(v);
                montaje.setIdBateriaResaltada(bateria.getId());
                montaje.setSize(Principal.getInstance().getEscritorio().getSize());
                Principal.getInstance().getEscritorio().add(montaje);
                montaje.setPosiciones(true);
                montaje.setVisible(true);
                montaje.generarEsquemaMontaje();
                montaje.agregarDescripcionNeumaticos();
                try {
                    montaje.setMaximum(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } else {
            JOptionPane.showMessageDialog(this, "La vista no está disponible. La batería no está montada en ninguna unidad.");
        }
    }//GEN-LAST:event_btnUbicacionActionPerformed

    private void btnReparacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnReparacionActionPerformed
        // TODO add your handling code here:
        int opcion = JOptionPane.showConfirmDialog(Principal.getInstance(), "¿Desea enviar la batería a reparación?", "Advertencia", JOptionPane.YES_NO_OPTION);
        if (opcion == JOptionPane.OK_OPTION) {
            BateriasJpaController dao = new BateriasJpaController(null);
            Categorias categoria = new Categorias();
            categoria.setId(Constantes.CATEGORIA_REPARACION);//enviado a reparación
            categoria.setNombre("Enviado a reparación");
            this.bateria.setIdCategoria(categoria);
            try {
                dao.edit(bateria);
                JOptionPane.showMessageDialog(this, "La batería fué enviada a reparación exitosamente.", "Operación finalizada", JOptionPane.INFORMATION_MESSAGE);
                buscador.actualizarBateria(bateria, fila);
                dispose();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(Principal.getInstance(), e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
        }
    }//GEN-LAST:event_btnReparacionActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnABodega;
    private javax.swing.JButton btnACementerio;
    private javax.swing.JButton btnAStock;
    private javax.swing.JButton btnEliminar;
    private javax.swing.JButton btnGuardar;
    private javax.swing.JButton btnReparacion;
    private javax.swing.JButton btnUbicacion;
    private javax.swing.JComboBox cmbDistribuidor;
    private javax.swing.JComboBox cmbMarca;
    private javax.swing.JLabel lblDireccion;
    private javax.swing.JLabel lblNombre;
    private javax.swing.JLabel lblNombre1;
    private javax.swing.JLabel lblTelefono;
    private javax.swing.JPanel pnlContenedor;
    private javax.swing.JPanel pnlToolBar;
    private javax.swing.JSpinner spnNumeroPlacas;
    private javax.swing.JToolBar toolBarPrincipal;
    private javax.swing.JTextField txtCodigo;
    // End of variables declaration//GEN-END:variables
}
